day02-1-牛牛的快递
测试链接：nowcoder.com/practice/41b42e7b3c3547e3acf8e90c41d98270?tpld=2908tqld=39852&ru=/exam/oj

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        vector<int> cost(n, 0);
        for(int i = 0; i < n; i++)
        {
            cin >> cost[i];
        }

        if(1 == n)
        {
            cout<<cost[0] <<endl;
            return 0;
        }
        //1.定义状态：明确 dp[i] 或 dp[i][j] 等表示的含义。
        vector<int> dp(n);
        //2.初始状态
        dp[0] = cost[0];
        dp[1] = cost[1];
        // 3. 状态转移方程
        for(int i = 2; i < n; i++)
        {
            dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
        }
        // 4.结果计算
        cout << min(dp[n-1], dp[n-2]) << endl;
    }
}
// 64 位输出请用 printf("%lld")